package org.zoomdev.zoom.dao.entities;

import org.zoomdev.zoom.dao.annotations.AutoGenerate;

import java.math.BigDecimal;
import java.time.*;
import java.util.Map;


public class AllTypesTable {

    /* ================ 数值类型字段 ================ */
    @AutoGenerate
    private Long id;
    private Byte tinyintCol;              // TINYINT
    private Short smallintCol;             // SMALLINT
    private Integer mediumintCol;          // MEDIUMINT
    private Integer intCol;                // INT
    private Long bigintCol;                // BIGINT
    private Float floatCol;                // FLOAT
    private Double doubleCol;              // DOUBLE
    private BigDecimal decimalCol;         // DECIMAL

    /* ================ 日期时间类型字段 ================ */
    private LocalDate dateCol;             // DATE
    private LocalTime timeCol;             // TIME
    private LocalDateTime datetimeCol;     // DATETIME
    private Instant timestampCol;         // TIMESTAMP
    private Year yearCol;                 // YEAR

    /* ================ 字符串/二进制类型字段 ================ */
    private String charCol;                // CHAR(10)
    private String varcharCol;             // VARCHAR(255)
    private byte[] binaryCol;              // BINARY(16)
    private byte[] varbinaryCol;           // VARBINARY(255)

    /* ================ 文本类型字段 ================ */
    private String tinytextCol;            // TINYTEXT
    private String textCol;                // TEXT
    private String mediumtextCol;          // MEDIUMTEXT
    private String longtextCol;            // LONGTEXT
    private byte[] tinyblobCol;            // TINYBLOB
    private byte[] blobCol;                  // BLOB
    private byte[] mediumblobCol;           // MEDIUMBLOB
    private byte[] longblobCol;             // LONGBLOB


    /* ================ 其他类型字段 ================ */
    private Map<String, Object> jsonCol;                // JSON (Java 8没有内置JSON支持)
    private EnumColor enumCol;                // ENUM
    private String setCol;                 // SET
    private Boolean booleanCol;            // BOOLEAN (TINYINT(1))


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Byte getTinyintCol() {
        return tinyintCol;
    }

    public void setTinyintCol(Byte tinyintCol) {
        this.tinyintCol = tinyintCol;
    }

    public Short getSmallintCol() {
        return smallintCol;
    }

    public void setSmallintCol(Short smallintCol) {
        this.smallintCol = smallintCol;
    }

    public Integer getMediumintCol() {
        return mediumintCol;
    }

    public void setMediumintCol(Integer mediumintCol) {
        this.mediumintCol = mediumintCol;
    }

    public Integer getIntCol() {
        return intCol;
    }

    public void setIntCol(Integer intCol) {
        this.intCol = intCol;
    }

    public Long getBigintCol() {
        return bigintCol;
    }

    public void setBigintCol(Long bigintCol) {
        this.bigintCol = bigintCol;
    }

    public Float getFloatCol() {
        return floatCol;
    }

    public void setFloatCol(Float floatCol) {
        this.floatCol = floatCol;
    }

    public Double getDoubleCol() {
        return doubleCol;
    }

    public void setDoubleCol(Double doubleCol) {
        this.doubleCol = doubleCol;
    }

    public BigDecimal getDecimalCol() {
        return decimalCol;
    }

    public void setDecimalCol(BigDecimal decimalCol) {
        this.decimalCol = decimalCol;
    }

    public LocalDate getDateCol() {
        return dateCol;
    }

    public void setDateCol(LocalDate dateCol) {
        this.dateCol = dateCol;
    }

    public LocalTime getTimeCol() {
        return timeCol;
    }

    public void setTimeCol(LocalTime timeCol) {
        this.timeCol = timeCol;
    }

    public LocalDateTime getDatetimeCol() {
        return datetimeCol;
    }

    public void setDatetimeCol(LocalDateTime datetimeCol) {
        this.datetimeCol = datetimeCol;
    }

    public Instant getTimestampCol() {
        return timestampCol;
    }

    public void setTimestampCol(Instant timestampCol) {
        this.timestampCol = timestampCol;
    }

    public Year getYearCol() {
        return yearCol;
    }

    public void setYearCol(Year yearCol) {
        this.yearCol = yearCol;
    }

    public String getCharCol() {
        return charCol;
    }

    public void setCharCol(String charCol) {
        this.charCol = charCol;
    }

    public String getVarcharCol() {
        return varcharCol;
    }

    public void setVarcharCol(String varcharCol) {
        this.varcharCol = varcharCol;
    }

    public byte[] getBinaryCol() {
        return binaryCol;
    }

    public void setBinaryCol(byte[] binaryCol) {
        this.binaryCol = binaryCol;
    }

    public byte[] getVarbinaryCol() {
        return varbinaryCol;
    }

    public void setVarbinaryCol(byte[] varbinaryCol) {
        this.varbinaryCol = varbinaryCol;
    }

    public String getTinytextCol() {
        return tinytextCol;
    }

    public void setTinytextCol(String tinytextCol) {
        this.tinytextCol = tinytextCol;
    }

    public String getTextCol() {
        return textCol;
    }

    public void setTextCol(String textCol) {
        this.textCol = textCol;
    }

    public String getMediumtextCol() {
        return mediumtextCol;
    }

    public void setMediumtextCol(String mediumtextCol) {
        this.mediumtextCol = mediumtextCol;
    }

    public String getLongtextCol() {
        return longtextCol;
    }

    public void setLongtextCol(String longtextCol) {
        this.longtextCol = longtextCol;
    }

    public byte[] getTinyblobCol() {
        return tinyblobCol;
    }

    public void setTinyblobCol(byte[] tinyblobCol) {
        this.tinyblobCol = tinyblobCol;
    }

    public byte[] getBlobCol() {
        return blobCol;
    }

    public void setBlobCol(byte[] blobCol) {
        this.blobCol = blobCol;
    }

    public byte[] getMediumblobCol() {
        return mediumblobCol;
    }

    public void setMediumblobCol(byte[] mediumblobCol) {
        this.mediumblobCol = mediumblobCol;
    }

    public byte[] getLongblobCol() {
        return longblobCol;
    }

    public void setLongblobCol(byte[] longblobCol) {
        this.longblobCol = longblobCol;
    }

    public Map<String, Object> getJsonCol() {
        return jsonCol;
    }

    public void setJsonCol(Map<String, Object> jsonCol) {
        this.jsonCol = jsonCol;
    }

    public EnumColor getEnumCol() {
        return enumCol;
    }

    public void setEnumCol(EnumColor enumCol) {
        this.enumCol = enumCol;
    }

    public String getSetCol() {
        return setCol;
    }

    public void setSetCol(String setCol) {
        this.setCol = setCol;
    }

    public Boolean getBooleanCol() {
        return booleanCol;
    }

    public void setBooleanCol(Boolean booleanCol) {
        this.booleanCol = booleanCol;
    }
}